类 功能布局 : 组件容器

	@布局配置([[根布局=真,宽度=-1,高度=-1,纵向布局=真]])
	变量 线性布局1 : 线性布局
	@布局配置([[父布局=线性布局1,宽度="-1",高度="45dp",对齐方式=17,内容="全部功能",粗体=真,字体大小="17",字体颜色=-16777216]])
	变量 文本框1 : 文本框
	@布局配置([[父布局=线性布局1,宽度="-1",纵向布局=真,左内边距="15dp",右内边距="15dp"]])
	变量 线性布局2 : 线性布局
	@布局配置([[父布局=线性布局2,宽度="-1",高度="35dp"]])
	变量 导航栏1 : 导航栏
	@布局配置([[父布局=线性布局2,宽度="-1",高度="2dp",圆角=4,卡片阴影=0,@左外边距="10dp",@右外边距="10dp",背景颜色=-3223858]])
	变量 卡片布局1 : 卡片布局
	@布局配置([[父布局=线性布局1,宽度="-1",高度="-1",@上外边距="10dp",@下外边距="20dp"]])
	变量 线性布局3 : 线性布局
	@布局配置([[父布局=线性布局3,宽度="-1",高度="-1"]])
	变量 分页布局1 : 分页布局

	变量 功能导航集合 : 文本集合={"热门功能","娱乐功能","安装功能"}
	变量 功能分页1:功能分页布局1
	变量 功能分页2:功能分页布局2
	变量 功能分页3:功能分页布局3
	事件 功能布局:创建完毕()
		线性布局1.支持单击 = 假
		文本框1.字体 = "font/2.ttf"
		分页布局1.添加页面(功能分页1)
		分页布局1.添加页面(功能分页2)
		分页布局1.添加页面(功能分页3)
		事件 导航栏1:导航文本样式(索引 : 整数,导航文本 : 文本) : 导航文本样式
			变量 文本样式 : 导航文本样式_渐变缩放
			文本样式.字体大小 = 17
			文本样式.粗体 = 真
			文本样式.缩小度 = 0.9
			//文本样式.字体 = "font/2.ttf"
			文本样式.颜色_选中 = -12687655
			文本样式.颜色_未选中 = 深灰色
			返回 文本样式

		结束 事件
		事件 导航栏1:导航条样式() : 导航条样式
			变量 条样式 : 导航条样式_直线渐变
			条样式.模式 = 导航条宽模式.导航文本宽度
			条样式.圆角 = 6
			条样式.滚动长度 = 2.0
			条样式.渐变颜色组 = {-12687655}
			返回 条样式
		结束 事件
		导航栏1.绑定分页布局(分页布局1)
		导航栏1.置文本集(功能导航集合)
	结束 事件

结束 类

类 功能分页布局1:组件容器

	@布局配置([[根布局=真,宽度=-1,高度=-1,对齐方式=17,左内边距="15dp",右内边距="15dp"]])
	变量 线性布局1 : 线性布局
	@布局配置([[父布局=线性布局1,宽度="-1",高度="-1",可视=假]])
	变量 线性布局列表 : 线性布局
	@布局配置([[父布局=线性布局列表,宽度="-1",高度="-1",列数=2,始终显示快速滚动条=假,显示滑块条=假]])
	变量 自定义宫格列表框1 : 自定义宫格列表框
	@布局配置([[父布局=线性布局1,对齐方式=17]])
	变量 线性布局无资源 : 线性布局
	@布局配置([[父布局=线性布局无资源,宽度="150dp",高度="150dp"]])
	变量 Lottie加载库1 : Lottie加载库


	变量 功能集合:文本集合
	变量 当前选中会员:文本
	事件 功能分页布局1:创建完毕()

	结束 事件

	方法 加载功能列表()
		变量 功能集合数组:JSON数组=全局配置.功能列表.取JSON数组("热门功能")
		功能集合.清空()
		如果 功能集合数组.长度==0 则
			线性布局无资源.可视 = 真
			线性布局列表.可视 = 假
			Lottie加载库1.加载动画("Lottie/无功能列表.json")
			Lottie加载库1.是否循环播放(假)
		否则
			循环(功能索引, 0, 功能集合数组.长度)
				功能集合.添加成员(功能集合数组.取JSON对象(功能索引).到文本())
			结束 循环
			线性布局无资源.可视 = 假
			线性布局列表.可视 = 真
			自定义宫格列表框1.更新项目(功能集合.长度)
		结束 如果
	结束 方法

	事件 自定义宫格列表框1:加载布局(索引 : 整数,项目布局 : 组件容器) : 组件容器
		变量 功能页项目:功能项目布局
		变量 功能对象:JSON对象=功能集合[索引]
		如果 功能对象.取文本("图标")=="" 则
			功能页项目.图片框1.可视=真
			功能页项目.Lottie加载库1.可视 = 假
			Glide图片加载.加载圆图(功能页项目.图片框1,全局配置.附加资源+"/功能/热门功能/"+功能对象.取文本("标题")+"_icon.png")
		否则
			如果 功能对象.取文本("图标").开头为("{")==真 则
				功能页项目.图片框1.可视=假
				功能页项目.Lottie加载库1.可视 = 真
				功能页项目.Lottie加载库1.加载动画代码(功能对象.取文本("图标"))
				功能页项目.Lottie加载库1.是否循环播放(真)
			否则
				功能页项目.图片框1.可视=真
				功能页项目.Lottie加载库1.可视 = 假
				Glide图片加载.加载圆图(功能页项目.图片框1,功能对象.取文本("图标"))
			结束 如果
		结束 如果

		如果 功能对象.取文本("标签显示")=="真" 则
			功能页项目.右上角标签.可视=真
			如果 功能对象.取文本("标签颜色")!="" 则
				功能页项目.图片框2.取图片().色调(文本到颜色值(功能对象.取文本("标签颜色")))
			结束 如果
			如果 功能对象.取文本("时间")==时间操作.取格式时间("YYYY年M月d日") 则
				功能页项目.右上角标签内容.内容 = "新"
			否则
				功能页项目.右上角标签内容.内容 = 功能对象.取文本("标签内容")
			结束 如果
		否则
			如果 功能对象.取文本("时间")==时间操作.取格式时间("YYYY年M月d日") 则
				功能页项目.右上角标签内容.内容 = "新"
			否则
				功能页项目.右上角标签.可视=假
			结束 如果
		结束 如果

		功能页项目.文本框1.内容 = 功能对象.取文本("标题")
		//功能页项目.文本框1.字体 = "font/2.ttf"
		返回 功能页项目
	结束 事件

	事件 自定义宫格列表框1:项目被单击(被单击组件 : 可视化组件,索引 : 整数)
		变量 选中对象:JSON对象=功能集合[索引]
		如果 文件是否存在(全局配置.资源存储路径+"/配置文件/热门功能/"+选中对象.取文本("标题")+".apk")==真 则
			如果 取安卓环境().取程序包管理器().取APK包信息(全局配置.资源存储路径+"/配置文件/热门功能/"+选中对象.取文本("标题")+".apk").版本名称() == 选中对象.取文本("版本") 则
				启动成功(选中对象)
			否则
				变量 底部 : DX消息框
				底部.样式(DX样式.MIUI)
				底部.标题("版本更新")
				底部.内容(选中对象.取文本("更新内容"))
				底部.按钮1("立即更新")
				底部.显示()
				事件 底部:按钮1被单击() : 逻辑型
					变量 网络工具1:网络工具
					变量 等待框1 : DX等待框
					等待框1.内容("正在下载")
					网络工具1.下载(全局配置.附加资源+"/功能/热门功能/"+选中对象.取文本("链接"),取安卓环境().取私有缓存目录路径()+"/"+选中对象.取文本("标题")+".apk")
					等待框1.显示()
					事件 网络工具1:正在下载(进度 : 小数)
						等待框1.进度(进度)
					结束 事件

					事件 网络工具1:下载结束(cookie : 文本)
						移动文件(取安卓环境().取私有缓存目录路径()+"/"+选中对象.取文本("标题")+".apk",全局配置.资源存储路径+"/配置文件/热门功能/"+选中对象.取文本("标题")+".apk")
						等待框1.类型(DX等待类型.成功)
						等待框1.内容("下载成功")
						延时(1800)
						等待框1.关闭()
					结束 事件

					事件 网络工具1:下载失败()
						如果 删除文件(取安卓环境().取私有缓存目录路径()+"/"+选中对象.取文本("标题")+".apk")==真 则
							等待框1.类型(DX等待类型.警告)
							等待框1.内容("下载失败")
							延时(1800)
							等待框1.关闭()
							启动成功(选中对象)
						结束 如果
					结束 事件
					返回 假
				结束 事件

			结束 如果
		否则
			变量 底部 : DX消息框
			底部.样式(DX样式.MIUI)
			底部.标题(选中对象.取文本("标题"))
			底部.内容(选中对象.取文本("介绍").替换("∅","\n"))
			底部.按钮1("立即下载")
			底部.显示()
			事件 底部:按钮1被单击() : 逻辑型
				变量 网络工具1:网络工具
				变量 等待框1 : DX等待框
				等待框1.内容("正在下载")
				网络工具1.下载(全局配置.附加资源+"/功能/热门功能/"+选中对象.取文本("链接"),取安卓环境().取私有缓存目录路径()+"/"+选中对象.取文本("标题")+".apk")
				等待框1.显示()
				事件 网络工具1:正在下载(进度 : 小数)
					等待框1.进度(进度)
				结束 事件

				事件 网络工具1:下载结束(cookie : 文本)
					移动文件(取安卓环境().取私有缓存目录路径()+"/"+选中对象.取文本("标题")+".apk",全局配置.资源存储路径+"/配置文件/热门功能/"+选中对象.取文本("标题")+".apk")
					等待框1.类型(DX等待类型.成功)
					等待框1.内容("下载成功")
					延时(1800)
					等待框1.关闭()
				结束 事件

				事件 网络工具1:下载失败()
					如果 删除文件(取安卓环境().取私有缓存目录路径()+"/"+选中对象.取文本("标题")+".apk")==真 则
						等待框1.类型(DX等待类型.警告)
						等待框1.内容("下载失败")
						延时(1800)
						等待框1.关闭()
					结束 如果
				结束 事件
				返回 假
			结束 事件

		结束 如果

	结束 事件

	方法 启动成功(启动功能对象:JSON对象)
		变量 功能插件数据对象:JSON对象=取安卓环境().取程序包管理器().取APK包信息(全局配置.资源存储路径+"/配置文件/热门功能/"+启动功能对象.取文本("标题")+".apk",128).应用信息.元数据.取文本("附加内容")
		假如 功能插件数据对象.取文本("使用权限")
			是 "免费"
				启动功能.功能路径=全局配置.资源存储路径+"/配置文件/热门功能/"+启动功能对象.取文本("标题")+".apk"
				取安卓窗口().切换窗口(启动功能)
			是 "会员"
				如果 全局配置.个人数据.取文本("是否会员")=="真" 则
					启动功能.功能路径=全局配置.资源存储路径+"/配置文件/热门功能/"+启动功能对象.取文本("标题")+".apk"
					取安卓窗口().切换窗口(启动功能)
				否则
					如果 全局配置.个人数据.取文本("身份")=="管理员" 或 全局配置.个人数据.取文本("身份")=="官方成员" 或 全局配置.个人数据.取文本("身份")=="贡献者" 则
						启动功能.功能路径=全局配置.资源存储路径+"/配置文件/热门功能/"+启动功能对象.取文本("标题")+".apk"
						取安卓窗口().切换窗口(启动功能)
					否则
						变量 弹窗提示1:DX消息框
						弹窗提示1.样式(DX样式.IOS)
						弹窗提示1.标题("权限不足")
						弹窗提示1.内容("此功能需要会员身份运行")
						弹窗提示1.按钮1("确定")
						弹窗提示1.显示()
					结束 如果
				结束 如果
			是 "官方成员"
				如果 全局配置.个人数据.取文本("身份")=="官方成员" 则
					启动功能.功能路径=全局配置.资源存储路径+"/配置文件/热门功能/"+启动功能对象.取文本("标题")+".apk"
					取安卓窗口().切换窗口(启动功能)
				否则
					变量 弹窗提示1:DX消息框
					弹窗提示1.样式(DX样式.IOS)
					弹窗提示1.标题("权限不足")
					弹窗提示1.内容("此功能需要官方成员身份运行")
					弹窗提示1.按钮1("确定")
					弹窗提示1.显示()
				结束 如果
			是 "管理员"
				如果 全局配置.个人数据.取文本("身份")=="管理员" 或 全局配置.个人数据.取文本("身份")=="官方成员" 则
					启动功能.功能路径=全局配置.资源存储路径+"/配置文件/热门功能/"+启动功能对象.取文本("标题")+".apk"
					取安卓窗口().切换窗口(启动功能)
				否则
					变量 弹窗提示1:DX消息框
					弹窗提示1.样式(DX样式.IOS)
					弹窗提示1.标题("权限不足")
					弹窗提示1.内容("此功能需要管理员身份运行")
					弹窗提示1.按钮1("确定")
					弹窗提示1.显示()
				结束 如果
			是 "贡献者"
				如果 全局配置.个人数据.取文本("身份")=="贡献者" 或 全局配置.个人数据.取文本("身份")=="管理员" 或 全局配置.个人数据.取文本("身份")=="官方成员" 则
					启动功能.功能路径=全局配置.资源存储路径+"/配置文件/热门功能/"+启动功能对象.取文本("标题")+".apk"
					取安卓窗口().切换窗口(启动功能)
				否则
					变量 弹窗提示1:DX消息框
					弹窗提示1.样式(DX样式.IOS)
					弹窗提示1.标题("权限不足")
					弹窗提示1.内容("此功能需要贡献者身份运行")
					弹窗提示1.按钮1("确定")
					弹窗提示1.显示()
				结束 如果
		结束 假如
	结束 方法

	事件 自定义宫格列表框1:项目被长按(被长按组件 : 可视化组件,索引 : 整数) : 逻辑型
		变量 选中对象:JSON对象=功能集合[索引]
		如果 文件是否存在(全局配置.资源存储路径+"/配置文件/热门功能/"+选中对象.取文本("标题")+".apk")==真 则 
			变量 底部 : DX消息框
			底部.样式(DX样式.MIUI)
			底部.标题(全局配置.获取apk应用名(取安卓环境(),全局配置.资源存储路径+"/配置文件/热门功能/"+选中对象.取文本("标题")+".apk"))
			变量 功能插件数据对象:JSON对象=取安卓环境().取程序包管理器().取APK包信息(全局配置.资源存储路径+"/配置文件/热门功能/"+选中对象.取文本("标题")+".apk",128).应用信息.元数据.取文本("附加内容")
			底部.内容(功能插件数据对象.取文本("介绍")+"\n\n"+"版本："+取安卓环境().取程序包管理器().取APK包信息(全局配置.资源存储路径+"/配置文件/热门功能/"+选中对象.取文本("标题")+".apk").版本名称()+"\n作者："+功能插件数据对象.取文本("作者")+"\n作者QQ："+功能插件数据对象.取文本("联系")+"\n使用权限："+功能插件数据对象.取文本("使用权限")+"\n\n")
			底部.按钮1("确定")
			底部.显示()
		结束 如果
		返回 真
	结束 事件

结束 类

类 功能分页布局2:组件容器

	@布局配置([[根布局=真,宽度=-1,高度=-1,对齐方式=17,左内边距="15dp",右内边距="15dp"]])
	变量 线性布局1 : 线性布局
	@布局配置([[父布局=线性布局1,宽度="-1",高度="-1",可视=假]])
	变量 线性布局列表 : 线性布局
	@布局配置([[父布局=线性布局列表,宽度="-1",高度="-1",列数=2,始终显示快速滚动条=假,显示滑块条=假]])
	变量 自定义宫格列表框1 : 自定义宫格列表框
	@布局配置([[父布局=线性布局1,对齐方式=17]])
	变量 线性布局无资源 : 线性布局
	@布局配置([[父布局=线性布局无资源,宽度="150dp",高度="150dp"]])
	变量 Lottie加载库1 : Lottie加载库


	变量 功能集合:文本集合
	变量 当前选中会员:文本
	事件 功能分页布局2:创建完毕()

	结束 事件

	方法 加载功能列表()
		变量 功能集合数组:JSON数组=全局配置.功能列表.取JSON数组("娱乐功能")
		功能集合.清空()
		如果 功能集合数组.长度==0 则
			线性布局无资源.可视 = 真
			线性布局列表.可视 = 假
			Lottie加载库1.加载动画("Lottie/无功能列表.json")
			Lottie加载库1.是否循环播放(假)
		否则
			循环(功能索引, 0, 功能集合数组.长度)
				功能集合.添加成员(功能集合数组.取JSON对象(功能索引).到文本())
			结束 循环
			线性布局无资源.可视 = 假
			线性布局列表.可视 = 真
			自定义宫格列表框1.更新项目(功能集合.长度)
		结束 如果
	结束 方法

	事件 自定义宫格列表框1:加载布局(索引 : 整数,项目布局 : 组件容器) : 组件容器
		变量 功能页项目:功能项目布局
		变量 功能对象:JSON对象=功能集合[索引]
		如果 功能对象.取文本("图标")=="" 则
			功能页项目.图片框1.可视=真
			功能页项目.Lottie加载库1.可视 = 假
			Glide图片加载.加载圆图(功能页项目.图片框1,全局配置.附加资源+"/功能/娱乐功能/"+功能对象.取文本("标题")+"_icon.png")
		否则
			如果 功能对象.取文本("图标").开头为("{")==真 则
				功能页项目.图片框1.可视=假
				功能页项目.Lottie加载库1.可视 = 真
				功能页项目.Lottie加载库1.加载动画代码(功能对象.取文本("图标"))
				功能页项目.Lottie加载库1.是否循环播放(真)
			否则
				功能页项目.图片框1.可视=真
				功能页项目.Lottie加载库1.可视 = 假
				Glide图片加载.加载圆图(功能页项目.图片框1,功能对象.取文本("图标"))
			结束 如果
		结束 如果

		如果 功能对象.取文本("标签显示")=="真" 则
			功能页项目.右上角标签.可视=真
			如果 功能对象.取文本("标签颜色")!="" 则
				功能页项目.图片框2.取图片().色调(文本到颜色值(功能对象.取文本("标签颜色")))
			结束 如果
			如果 功能对象.取文本("时间")==时间操作.取格式时间("YYYY年M月d日") 则
				功能页项目.右上角标签内容.内容 = "新"
			否则
				功能页项目.右上角标签内容.内容 = 功能对象.取文本("标签内容")
			结束 如果
		否则
			如果 功能对象.取文本("时间")==时间操作.取格式时间("YYYY年M月d日") 则
				功能页项目.右上角标签内容.内容 = "新"
			否则
				功能页项目.右上角标签.可视=假
			结束 如果
		结束 如果

		功能页项目.文本框1.内容 = 功能对象.取文本("标题")
		//功能页项目.文本框1.字体 = "font/2.ttf"
		返回 功能页项目
	结束 事件

	事件 自定义宫格列表框1:项目被单击(被单击组件 : 可视化组件,索引 : 整数)
		变量 选中对象:JSON对象=功能集合[索引]
		如果 文件是否存在(全局配置.资源存储路径+"/配置文件/娱乐功能/"+选中对象.取文本("标题")+".apk")==真 则
			如果 取安卓环境().取程序包管理器().取APK包信息(全局配置.资源存储路径+"/配置文件/娱乐功能/"+选中对象.取文本("标题")+".apk").版本名称() == 选中对象.取文本("版本") 则
				启动成功(选中对象)
			否则
				变量 底部 : DX消息框
				底部.样式(DX样式.MIUI)
				底部.标题("版本更新")
				底部.内容(选中对象.取文本("更新内容"))
				底部.按钮1("立即更新")
				底部.显示()
				事件 底部:按钮1被单击() : 逻辑型
					变量 网络工具1:网络工具
					变量 等待框1 : DX等待框
					等待框1.内容("正在下载")
					网络工具1.下载(全局配置.附加资源+"/功能/娱乐功能/"+选中对象.取文本("链接"),取安卓环境().取私有缓存目录路径()+"/"+选中对象.取文本("标题")+".apk")
					等待框1.显示()
					事件 网络工具1:正在下载(进度 : 小数)
						等待框1.进度(进度)
					结束 事件

					事件 网络工具1:下载结束(cookie : 文本)
						移动文件(取安卓环境().取私有缓存目录路径()+"/"+选中对象.取文本("标题")+".apk",全局配置.资源存储路径+"/配置文件/娱乐功能/"+选中对象.取文本("标题")+".apk")
						等待框1.类型(DX等待类型.成功)
						等待框1.内容("下载成功")
						延时(1800)
						等待框1.关闭()
					结束 事件

					事件 网络工具1:下载失败()
						如果 删除文件(取安卓环境().取私有缓存目录路径()+"/"+选中对象.取文本("标题")+".apk")==真 则
							等待框1.类型(DX等待类型.警告)
							等待框1.内容("下载失败")
							延时(1800)
							等待框1.关闭()
							启动成功(选中对象)
						结束 如果
					结束 事件
					返回 假
				结束 事件

			结束 如果
		否则
			变量 底部 : DX消息框
			底部.样式(DX样式.MIUI)
			底部.标题(选中对象.取文本("标题"))
			底部.内容(选中对象.取文本("介绍").替换("∅","\n"))
			底部.按钮1("立即下载")
			底部.显示()
			事件 底部:按钮1被单击() : 逻辑型
				变量 网络工具1:网络工具
				变量 等待框1 : DX等待框
				等待框1.内容("正在下载")
				网络工具1.下载(全局配置.附加资源+"/功能/娱乐功能/"+选中对象.取文本("链接"),取安卓环境().取私有缓存目录路径()+"/"+选中对象.取文本("标题")+".apk")
				等待框1.显示()
				事件 网络工具1:正在下载(进度 : 小数)
					等待框1.进度(进度)
				结束 事件


				事件 网络工具1:下载结束(cookie : 文本)
					移动文件(取安卓环境().取私有缓存目录路径()+"/"+选中对象.取文本("标题")+".apk",全局配置.资源存储路径+"/配置文件/娱乐功能/"+选中对象.取文本("标题")+".apk")
					等待框1.类型(DX等待类型.成功)
					等待框1.内容("下载成功")
					延时(1800)
					等待框1.关闭()
				结束 事件

				事件 网络工具1:下载失败()
					如果 删除文件(取安卓环境().取私有缓存目录路径()+"/"+选中对象.取文本("标题")+".apk")==真 则
						等待框1.类型(DX等待类型.警告)
						等待框1.内容("下载失败")
						延时(1800)
						等待框1.关闭()
					结束 如果
				结束 事件
				返回 假
			结束 事件

		结束 如果

	结束 事件

	方法 启动成功(启动功能对象:JSON对象)
		变量 功能插件数据对象:JSON对象=取安卓环境().取程序包管理器().取APK包信息(全局配置.资源存储路径+"/配置文件/娱乐功能/"+启动功能对象.取文本("标题")+".apk",128).应用信息.元数据.取文本("附加内容")
		假如 功能插件数据对象.取文本("使用权限")
			是 "免费"
				启动功能.功能路径=全局配置.资源存储路径+"/配置文件/娱乐功能/"+启动功能对象.取文本("标题")+".apk"
				取安卓窗口().切换窗口(启动功能)
			是 "会员"
				如果 全局配置.个人数据.取文本("是否会员")=="真" 则
					启动功能.功能路径=全局配置.资源存储路径+"/配置文件/娱乐功能/"+启动功能对象.取文本("标题")+".apk"
					取安卓窗口().切换窗口(启动功能)
				否则
					如果 全局配置.个人数据.取文本("身份")=="管理员" 或 全局配置.个人数据.取文本("身份")=="官方成员" 或 全局配置.个人数据.取文本("身份")=="贡献者" 则
						启动功能.功能路径=全局配置.资源存储路径+"/配置文件/娱乐功能/"+启动功能对象.取文本("标题")+".apk"
						取安卓窗口().切换窗口(启动功能)
					否则
						变量 弹窗提示1:DX消息框
						弹窗提示1.样式(DX样式.IOS)
						弹窗提示1.标题("权限不足")
						弹窗提示1.内容("此功能需要会员身份运行")
						弹窗提示1.按钮1("确定")
						弹窗提示1.显示()
					结束 如果
				结束 如果
			是 "官方成员"
				如果 全局配置.个人数据.取文本("身份")=="官方成员" 则
					启动功能.功能路径=全局配置.资源存储路径+"/配置文件/娱乐功能/"+启动功能对象.取文本("标题")+".apk"
					取安卓窗口().切换窗口(启动功能)
				否则
					变量 弹窗提示1:DX消息框
					弹窗提示1.样式(DX样式.IOS)
					弹窗提示1.标题("权限不足")
					弹窗提示1.内容("此功能需要官方成员身份运行")
					弹窗提示1.按钮1("确定")
					弹窗提示1.显示()
				结束 如果
			是 "管理员"
				如果 全局配置.个人数据.取文本("身份")=="管理员" 或 全局配置.个人数据.取文本("身份")=="官方成员" 则
					启动功能.功能路径=全局配置.资源存储路径+"/配置文件/娱乐功能/"+启动功能对象.取文本("标题")+".apk"
					取安卓窗口().切换窗口(启动功能)
				否则
					变量 弹窗提示1:DX消息框
					弹窗提示1.样式(DX样式.IOS)
					弹窗提示1.标题("权限不足")
					弹窗提示1.内容("此功能需要管理员身份运行")
					弹窗提示1.按钮1("确定")
					弹窗提示1.显示()
				结束 如果
			是 "贡献者"
				如果 全局配置.个人数据.取文本("身份")=="贡献者" 或 全局配置.个人数据.取文本("身份")=="管理员" 或 全局配置.个人数据.取文本("身份")=="官方成员" 则
					启动功能.功能路径=全局配置.资源存储路径+"/配置文件/娱乐功能/"+启动功能对象.取文本("标题")+".apk"
					取安卓窗口().切换窗口(启动功能)
				否则
					变量 弹窗提示1:DX消息框
					弹窗提示1.样式(DX样式.IOS)
					弹窗提示1.标题("权限不足")
					弹窗提示1.内容("此功能需要贡献者身份运行")
					弹窗提示1.按钮1("确定")
					弹窗提示1.显示()
				结束 如果
		结束 假如
	结束 方法

	事件 自定义宫格列表框1:项目被长按(被长按组件 : 可视化组件,索引 : 整数) : 逻辑型
		变量 选中对象:JSON对象=功能集合[索引]
		如果 文件是否存在(全局配置.资源存储路径+"/配置文件/娱乐功能/"+选中对象.取文本("标题")+".apk")==真 则 
			变量 底部 : DX消息框
			底部.样式(DX样式.MIUI)
			底部.标题(全局配置.获取apk应用名(取安卓环境(),全局配置.资源存储路径+"/配置文件/娱乐功能/"+选中对象.取文本("标题")+".apk"))
			变量 功能插件数据对象:JSON对象=取安卓环境().取程序包管理器().取APK包信息(全局配置.资源存储路径+"/配置文件/娱乐功能/"+选中对象.取文本("标题")+".apk",128).应用信息.元数据.取文本("附加内容")
			底部.内容(功能插件数据对象.取文本("介绍")+"\n\n"+"版本："+取安卓环境().取程序包管理器().取APK包信息(全局配置.资源存储路径+"/配置文件/娱乐功能/"+选中对象.取文本("标题")+".apk").版本名称()+"\n作者："+功能插件数据对象.取文本("作者")+"\n作者QQ："+功能插件数据对象.取文本("联系")+"\n使用权限："+功能插件数据对象.取文本("使用权限")+"\n\n")
			底部.按钮1("确定")
			底部.显示()
		结束 如果
		返回 真
	结束 事件


结束 类

类 功能分页布局3:组件容器

	@布局配置([[根布局=真,宽度=-1,高度=-1,对齐方式=17,左内边距="15dp",右内边距="15dp"]])
	变量 线性布局1 : 线性布局
	@布局配置([[父布局=线性布局1,宽度="-1",高度="-1",可视=假]])
	变量 线性布局列表 : 线性布局
	@布局配置([[父布局=线性布局列表,宽度="-1",高度="-1",列数=2,始终显示快速滚动条=假,显示滑块条=假]])
	变量 自定义宫格列表框1 : 自定义宫格列表框
	@布局配置([[父布局=线性布局1,对齐方式=17]])
	变量 线性布局无资源 : 线性布局
	@布局配置([[父布局=线性布局无资源,宽度="150dp",高度="150dp"]])
	变量 Lottie加载库1 : Lottie加载库

	变量 功能路径集合 : 文本集合
	变量 我的布局1:我的布局
	变量 当前选中会员:文本
	事件 功能分页布局3:创建完毕()
		//加载功能列表()
	结束 事件

	@异步方法
	方法 加载功能列表()
		功能路径集合.清空()
		变量 加载路径 : 文本 = 全局配置.资源存储路径+"/配置文件/安装功能"
		等待 扫描(加载路径)
		如果 功能路径集合.长度==0 则
			全局配置.安装功能数=功能路径集合.长度.到文本()
			线性布局无资源.可视 = 真
			线性布局列表.可视 = 假
			Lottie加载库1.加载动画("Lottie/无功能列表.json")
			Lottie加载库1.是否循环播放(假)
		否则
			全局配置.安装功能数=功能路径集合.长度.到文本()
			线性布局无资源.可视 = 假
			线性布局列表.可视 = 真
			自定义宫格列表框1.更新项目(功能路径集合.长度)
		结束 如果

	结束 方法

	方法 扫描(加载文件 : 文本)
		功能路径集合=取子文件集合2(加载文件,0,真)
	结束 方法

	事件 自定义宫格列表框1:加载布局(索引 : 整数,项目布局 : 组件容器) : 组件容器
		变量 功能页项目:功能项目布局
		Glide图片加载.加载圆图_可绘制(功能页项目.图片框1,全局配置.获取apk应用图标(取安卓环境(),功能路径集合[索引]))
		功能页项目.文本框1.内容 = 全局配置.获取apk应用名(取安卓环境(),功能路径集合[索引])
		返回 功能页项目
	结束 事件


	事件 自定义宫格列表框1:项目被单击(被单击组件 : 可视化组件,索引 : 整数)
		变量 底部1 : DX消息框
		底部1.样式(DX样式.MIUI)
		底部1.标题(全局配置.获取apk应用名(取安卓环境(),功能路径集合[索引]))
		变量 功能插件数据对象:JSON对象=取安卓环境().取程序包管理器().取APK包信息(功能路径集合[索引],128).应用信息.元数据.取文本("附加内容")
		底部1.内容(功能插件数据对象.取文本("介绍")+"\n\n"+"版本："+取安卓环境().取程序包管理器().取APK包信息(功能路径集合[索引]).版本名称()+"\n作者："+功能插件数据对象.取文本("作者")+"\n作者QQ："+功能插件数据对象.取文本("联系")+"\n使用权限："+功能插件数据对象.取文本("使用权限")+"\n\n")
		底部1.按钮1("确定")
		底部1.显示()
		事件 底部1:按钮1被单击() : 逻辑型
			假如 功能插件数据对象.取文本("使用权限")
				是 "免费"
					启动功能.功能路径=功能路径集合[索引]
					取安卓窗口().切换窗口(启动功能)
				是 "会员"
					如果 全局配置.个人数据.取文本("是否会员")=="真" 则
						启动功能.功能路径=功能路径集合[索引]
						取安卓窗口().切换窗口(启动功能)
					否则
						如果 全局配置.个人数据.取文本("身份")=="管理员" 或 全局配置.个人数据.取文本("身份")=="官方成员" 或 全局配置.个人数据.取文本("身份")=="贡献者" 则
							启动功能.功能路径=功能路径集合[索引]
							取安卓窗口().切换窗口(启动功能)
						否则
							变量 弹窗提示1:DX消息框
							弹窗提示1.样式(DX样式.IOS)
							弹窗提示1.标题("权限不足")
							弹窗提示1.内容("此功能需要会员身份运行")
							弹窗提示1.按钮1("确定")
							弹窗提示1.显示()
						结束 如果
					结束 如果
				是 "官方成员"
					如果 全局配置.个人数据.取文本("身份")=="官方成员" 则
						启动功能.功能路径=功能路径集合[索引]
						取安卓窗口().切换窗口(启动功能)
					否则
						变量 弹窗提示1:DX消息框
						弹窗提示1.样式(DX样式.IOS)
						弹窗提示1.标题("权限不足")
						弹窗提示1.内容("此功能需要官方成员身份运行")
						弹窗提示1.按钮1("确定")
						弹窗提示1.显示()
					结束 如果
				是 "管理员"
					如果 全局配置.个人数据.取文本("身份")=="管理员" 或 全局配置.个人数据.取文本("身份")=="官方成员" 则
						启动功能.功能路径=功能路径集合[索引]
						取安卓窗口().切换窗口(启动功能)
					否则
						变量 弹窗提示1:DX消息框
						弹窗提示1.样式(DX样式.IOS)
						弹窗提示1.标题("权限不足")
						弹窗提示1.内容("此功能需要管理员身份运行")
						弹窗提示1.按钮1("确定")
						弹窗提示1.显示()
					结束 如果
				是 "贡献者"
					如果 全局配置.个人数据.取文本("身份")=="贡献者" 或 全局配置.个人数据.取文本("身份")=="管理员" 或 全局配置.个人数据.取文本("身份")=="官方成员" 则
						启动功能.功能路径=功能路径集合[索引]
						取安卓窗口().切换窗口(启动功能)
					否则
						变量 弹窗提示1:DX消息框
						弹窗提示1.样式(DX样式.IOS)
						弹窗提示1.标题("权限不足")
						弹窗提示1.内容("此功能需要贡献者身份运行")
						弹窗提示1.按钮1("确定")
						弹窗提示1.显示()
					结束 如果
			结束 假如
			返回 假
		结束 事件
	结束 事件
	事件 自定义宫格列表框1:项目被长按(被长按组件 : 可视化组件,索引 : 整数) : 逻辑型
		变量 底部 : DX消息框
		底部.样式(DX样式.MIUI)
		底部.标题("功能操作")
		底部.按钮1("取消")
		底部.按钮2("分享")
		底部.按钮3("删除")
		底部.按钮方向(1)
		底部.显示()
		事件 底部:按钮1被单击() : 逻辑型

			返回 假
		结束 事件
		事件 底部:按钮2被单击() : 逻辑型
			变量 文件名称:文本=全局配置.获取apk应用名(取安卓环境(),功能路径集合[索引])
			如果 复制文件(功能路径集合[索引],取存储卡路径()+"/"+全局配置.软件名称+"/功能备份/"+文件名称+".apk")==真 则
				分享操作.分享文件(取安卓环境(),取存储卡路径()+"/"+全局配置.软件名称+"/功能备份/"+文件名称+".apk")
			结束 如果
			返回 假
		结束 事件
		事件 底部:按钮3被单击() : 逻辑型
			如果 删除文件(功能路径集合[索引])==真 则
				加载功能列表()
				弹出等待_成功("删除成功")
			结束 如果
			返回 假
		结束 事件
		返回 真
	结束 事件

结束 类

类 功能项目布局:组件容器

	@布局配置([[根布局=真,宽度=-1,高度="80dp",背景颜色=-1576716]])
	变量 线性布局1 : 线性布局
	@布局配置([[父布局=线性布局1,宽度="-1",高度="-1",圆角=24,卡片阴影=0,@外边距="8dp"]])
	变量 卡片布局1 : 卡片布局
	@布局配置([[父布局=卡片布局1,宽度="-1",高度="-1"]])
	变量 相对布局1 : 相对布局
	@布局配置([[父布局=相对布局1,宽度="-1",高度="-1",对齐方式=16,左内边距="10dp"]])
	变量 线性布局2 : 线性布局
	@布局配置([[父布局=线性布局2,宽度="35dp",高度="35dp",可视=假]])
	变量 Lottie加载库1 : Lottie加载库
	@布局配置([[父布局=线性布局2,宽度="35dp",高度="35dp"]])
	变量 图片框1 : 图片框
	@布局配置([[父布局=线性布局2,内容="项目名称",粗体=真,字体大小="15",单行显示=真,@左外边距="10dp"]])
	变量 文本框1 : 文本框
	@布局配置([[父布局=相对布局1,@位于布局右边=真]])
	变量 右上角标签 : 相对布局
	@布局配置([[父布局=右上角标签,图片资源="../../素材/内置/png/功能版本显示.png",拉伸方式=4,宽度="30dp",高度="20dp"]])
	变量 图片框2 : 图片框
	@布局配置([[父布局=右上角标签,内容="新",宽度="30dp",高度="20dp",对齐方式=17,字体大小="10",字体颜色=-1]])
	变量 右上角标签内容 : 文本框

结束 类